Emacs has specialized major modes (see Major Modes) for many
programming languages. A programming language mode typically
specifies the syntax of expressions, the customary rules for
indentation, how to do syntax highlighting for the language, and
how to find the beginning or end of a function definition. It
often has features for compiling and debugging programs as well.
The major mode for each language is named after the language; for
instance, the major mode for the C programming language is
c-mode.
Emacs has programming language modes for Lisp, Scheme, the Scheme-based DSSSL expression language, Ada, ASM, AWK, C, C++, Fortran, Icon, IDL (CORBA), IDLWAVE, Java, Javascript, Metafont (TeX’s companion for font creation), Modula2, Object Pascal, Objective-C, Octave, Pascal, Perl, Pike, PostScript, Prolog, Python, Ruby, Simula, Tcl, and VHDL. An alternative mode for Perl is called CPerl mode. Modes are also available for the scripting languages of the common GNU and Unix shells, and MS-DOS/MS-Windows ‘BAT’ files, and for makefiles, DNS master files, and various sorts of configuration files.
Ideally, Emacs should have a major mode for each programming language that you might want to edit. If it doesn’t have a mode for your favorite language, the mode might be implemented in a package not distributed with Emacs (see Packages); or you can contribute one.
In most programming languages, indentation should vary from
line to line to illustrate the structure of the program.
Therefore, in most programming language modes, typing TAB updates the indentation of the current line (see
Program Indent).
Furthermore, DEL is usually bound to
backward-delete-char-untabify, which deletes
backward treating each tab as if it were the equivalent number of
spaces, so that you can delete one column of indentation without
worrying whether the whitespace consists of spaces or
tabs.
Entering a programming language mode runs the custom Lisp
functions specified in the hook variable
prog-mode-hook, followed by those specified in the
mode’s own mode hook (see Major Modes). For instance,
entering C mode runs the hooks prog-mode-hook and
c-mode-hook. See Hooks, for information about hooks.
Separate manuals are available for the modes for Ada (see Ada Mode in Ada Mode), C/C++/Objective C/Java/Corba IDL/Pike/AWK (see CC Mode in CC Mode), and IDLWAVE (see IDLWAVE in IDLWAVE User Manual).